/**
 * 防抖是为了， 多次运行导致了， 一次没有运行完， 还运行下一次
 * 节流就仅仅是为了减少资源的占用， 所以， 就简单一些， 只要多少时间执行一次即可了
 */
function foo(executor, interval) {
    let run = false
    let timer = null

    return function () {
        const _this = this;
        const args= arguments[0]
        // 如果正在执行， 就将run改为false， 退出
        if (run) {
            return
        }
        // 如果下一次， 不是run的时候， 就执行逻辑代码， 然后， 将run改为true， 防止下一次运行
        clearTimeout(timer)
        run = true
        this.timer = setTimeout(() => {
            run = false
            executor.apply(_this, args)
        }, interval)
    }
}

function executor() {
    // 实际的逻辑代码
}

foo(executor, 100)


function debounce(fun, interval){
    let timer = null
    return function (...args){
        let _this = this
        clearTimeout(timer)
        timer  = setTimeout(()=>{
            fun.call(_this, args)
        },interval)
    }
}
